/*
 * Copyright (c) Microsoft. All rights reserved.
 * Licensed under the MIT license. See License.txt in the repository root.
 */

/*
 * Includes Window's SAL Annotations header, or fakes it on Unix.
 *
 * See http://msdn.microsoft.com/en-us/library/ms235402%28v=vs.100%29.aspx
 */

#ifndef TEESAL_H
#define TEESAL_H

#ifdef _WIN32
# include <sal.h>
#else
// Fakes for Unix
# define _In_
# define _In_opt_
# define _In_z_
# define _In_opt_z_
# define _In_count_(size)
# define _In_opt_count_(size)
# define _In_bytecount_(size)
# define _In_opt_bytecount_(size)
# define _In_count_c_(size)
# define _In_opt_count_c_(size)
# define _In_bytecount_c_(size)
# define _In_opt_bytecount_c_(size)
# define _In_z_count_(size)
# define _In_opt_z_count_(size)
# define _In_z_bytecount_(size)
# define _In_opt_z_bytecount_(size)
# define _In_z_count_c_(size)
# define _In_opt_z_count_c_(size)
# define _In_z_bytecount_c_(size)
# define _In_opt_z_bytecount_c_(size)
# define _In_ptrdiff_count_(size)
# define _In_opt_ptrdiff_count_(size)
# define _In_count_x_(size)
# define _In_opt_count_x_(size)
# define _In_bytecount_x_(size)
# define _In_opt_bytecount_x_(size)
# define _Out_
# define _Out_opt_
# define _Out_cap_(size)
# define _Out_opt_cap_(size)
# define _Out_bytecap_(size)
# define _Out_opt_bytecap_(size)
# define _Out_cap_c_(size)
# define _Out_opt_cap_c_(size)
# define _Out_bytecap_c_(size)
# define _Out_opt_bytecap_c_(size)
# define _Out_cap_m_(mult,size)
# define _Out_opt_cap_m_(mult,size)
# define _Out_z_cap_m_(mult,size)
# define _Out_opt_z_cap_m_(mult,size)
# define _Out_ptrdiff_cap_(size)
# define _Out_opt_ptrdiff_cap_(size)
# define _Out_cap_x_(size)
# define _Out_opt_cap_x_(size)
# define _Out_bytecap_x_(size)
# define _Out_opt_bytecap_x_(size)
# define _Out_z_cap_(size)
# define _Out_opt_z_cap_(size)
# define _Out_z_bytecap_(size)
# define _Out_opt_z_bytecap_(size)
# define _Out_z_cap_c_(size)
# define _Out_opt_z_cap_c_(size)
# define _Out_z_bytecap_c_(size)
# define _Out_opt_z_bytecap_c_(size)
# define _Out_z_cap_x_(size)
# define _Out_opt_z_cap_x_(size)
# define _Out_z_bytecap_x_(size)
# define _Out_opt_z_bytecap_x_(size)
# define _Out_cap_post_count_(cap,count)
# define _Out_opt_cap_post_count_(cap,count)
# define _Out_bytecap_post_bytecount_(cap,count)
# define _Out_opt_bytecap_post_bytecount_(cap,count)
# define _Out_z_cap_post_count_(cap,count)
# define _Out_opt_z_cap_post_count_(cap,count)
# define _Out_z_bytecap_post_bytecount_(cap,count)
# define _Out_opt_z_bytecap_post_bytecount_(cap,count)
# define _Out_capcount_(capcount)
# define _Out_opt_capcount_(capcount)
# define _Out_bytecapcount_(capcount)
# define _Out_opt_bytecapcount_(capcount)
# define _Out_capcount_x_(capcount)
# define _Out_opt_capcount_x_(capcount)
# define _Out_bytecapcount_x_(capcount)
# define _Out_opt_bytecapcount_x_(capcount)
# define _Out_z_capcount_(capcount)
# define _Out_opt_z_capcount_(capcount)
# define _Out_z_bytecapcount_(capcount)
# define _Out_opt_z_bytecapcount_(capcount)
# define _Inout_
# define _Inout_opt_
# define _Inout_z_
# define _Inout_opt_z_
# define _Inout_count_(size)
# define _Inout_opt_count_(size)
# define _Inout_bytecount_(size)
# define _Inout_opt_bytecount_(size)
# define _Inout_count_c_(size)
# define _Inout_opt_count_c_(size)
# define _Inout_bytecount_c_(size)
# define _Inout_opt_bytecount_c_(size)
# define _Inout_z_count_(size)
# define _Inout_opt_z_count_(size)
# define _Inout_z_bytecount_(size)
# define _Inout_opt_z_bytecount_(size)
# define _Inout_z_count_c_(size)
# define _Inout_opt_z_count_c_(size)
# define _Inout_z_bytecount_c_(size)
# define _Inout_opt_z_bytecount_c_(size)
# define _Inout_ptrdiff_count_(size)
# define _Inout_opt_ptrdiff_count_(size)
# define _Inout_count_x_(size)
# define _Inout_opt_count_x_(size)
# define _Inout_bytecount_x_(size)
# define _Inout_opt_bytecount_x_(size)
# define _Inout_cap_(size)
# define _Inout_opt_cap_(size)
# define _Inout_bytecap_(size)
# define _Inout_opt_bytecap_(size)
# define _Inout_cap_c_(size)
# define _Inout_opt_cap_c_(size)
# define _Inout_bytecap_c_(size)
# define _Inout_opt_bytecap_c_(size)
# define _Inout_cap_x_(size)
# define _Inout_opt_cap_x_(size)
# define _Inout_bytecap_x_(size)
# define _Inout_opt_bytecap_x_(size)
# define _Inout_z_cap_(size)
# define _Inout_opt_z_cap_(size)
# define _Inout_z_bytecap_(size)
# define _Inout_opt_z_bytecap_(size)
# define _Inout_z_cap_c_(size)
# define _Inout_opt_z_cap_c_(size)
# define _Inout_z_bytecap_c_(size)
# define _Inout_opt_z_bytecap_c_(size)
# define _Inout_z_cap_x_(size)
# define _Inout_opt_z_cap_x_(size)
# define _Inout_z_bytecap_x_(size)
# define _Inout_opt_z_bytecap_x_(size)
# define _Ret_
# define _Ret_opt_
# define _Deref_out_
# define _Deref_out_opt_
# define _Deref_opt_out_
# define _Deref_opt_out_opt_
# define _Deref_out_z_
# define _Deref_out_opt_z_
# define _Deref_opt_out_z_
# define _Deref_opt_out_opt_z_
# define _Check_return_
# define _Printf_format_string_
# define _Scanf_format_string_
# define _Scanf_s_format_string_
# define _FormatMessage_format_string_
# define _Success_(expr)
# define _In_bound_
# define _Out_bound_
# define _Ret_bound_
# define _Deref_in_bound_
# define _Deref_out_bound_
# define _Deref_inout_bound_
# define _Deref_ret_bound_
# define _In_range_(lb,ub)
# define _Out_range_(lb,ub)
# define _Ret_range_(lb,ub)
# define _Deref_in_range_(lb,ub)
# define _Deref_out_range_(lb,ub)
# define _Deref_ret_range_(lb,ub)
# define _Pre_z_
# define _Pre_opt_z_
# define _Pre_cap_(size)
# define _Pre_opt_cap_(size)
# define _Pre_bytecap_(size)
# define _Pre_opt_bytecap_(size)
# define _Pre_cap_c_(size)
# define _Pre_opt_cap_c_(size)
# define _Pre_bytecap_c_(size)
# define _Pre_opt_bytecap_c_(size)
# define _Pre_cap_m_(mult,size)
# define _Pre_opt_cap_m_(mult,size)
# define _Pre_cap_for_(param)
# define _Pre_opt_cap_for_(param)
# define _Pre_cap_x_(size)
# define _Pre_opt_cap_x_(size)
# define _Pre_bytecap_x_(size)
# define _Pre_opt_bytecap_x_(size)
# define _Pre_ptrdiff_cap_(ptr)
# define _Pre_opt_ptrdiff_cap_(ptr)
# define _Pre_z_cap_(size)
# define _Pre_opt_z_cap_(size)
# define _Pre_z_bytecap_(size)
# define _Pre_opt_z_bytecap_(size)
# define _Pre_z_cap_c_(size)
# define _Pre_opt_z_cap_c_(size)
# define _Pre_z_bytecap_c_(size)
# define _Pre_opt_z_bytecap_c_(size)
# define _Pre_z_cap_x_(size)
# define _Pre_opt_z_cap_x_(size)
# define _Pre_z_bytecap_x_(size)
# define _Pre_opt_z_bytecap_x_(size)
# define _Pre_valid_cap_(size)
# define _Pre_opt_valid_cap_(size)
# define _Pre_valid_bytecap_(size)
# define _Pre_opt_valid_bytecap_(size)
# define _Pre_valid_cap_c_(size)
# define _Pre_opt_valid_cap_c_(size)
# define _Pre_valid_bytecap_c_(size)
# define _Pre_opt_valid_bytecap_c_(size)
# define _Pre_valid_cap_x_(size)
# define _Pre_opt_valid_cap_x_(size)
# define _Pre_valid_bytecap_x_(size)
# define _Pre_opt_valid_bytecap_x_(size)
# define _Pre_count_(size)
# define _Pre_opt_count_(size)
# define _Pre_bytecount_(size)
# define _Pre_opt_bytecount_(size)
# define _Pre_count_c_(size)
# define _Pre_opt_count_c_(size)
# define _Pre_bytecount_c_(size)
# define _Pre_opt_bytecount_c_(size)
# define _Pre_count_x_(size)
# define _Pre_opt_count_x_(size)
# define _Pre_bytecount_x_(size)
# define _Pre_opt_bytecount_x_(size)
# define _Pre_ptrdiff_count_(ptr)
# define _Pre_opt_ptrdiff_count_(ptr)
# define _Pre_valid_
# define _Pre_opt_valid_
# define _Pre_invalid_
# define _Pre_notnull_
# define _Pre_maybenull_
# define _Pre_null_
# define _Pre_readonly_
# define _Pre_writeonly_
# define _Post_z_
# define _Post_maybez_
# define _Post_cap_(size)
# define _Post_bytecap_(size)
# define _Post_count_(size)
# define _Post_bytecount_(size)
# define _Post_count_c_(size)
# define _Post_bytecount_c_(size)
# define _Post_count_x_(size)
# define _Post_bytecount_x_(size)
# define _Post_z_count_(size)
# define _Post_z_bytecount_(size)
# define _Post_z_count_c_(size)
# define _Post_z_bytecount_c_(size)
# define _Post_z_count_x_(size)
# define _Post_z_bytecount_x_(size)
# define _Post_ptr_invalid_
# define _Post_valid_
# define _Post_invalid_
# define _Post_notnull_
# define _Ret_z_
# define _Ret_opt_z_
# define _Ret_cap_(size)
# define _Ret_opt_cap_(size)
# define _Ret_bytecap_(size)
# define _Ret_opt_bytecap_(size)
# define _Ret_cap_c_(size)
# define _Ret_opt_cap_c_(size)
# define _Ret_bytecap_c_(size)
# define _Ret_opt_bytecap_c_(size)
# define _Ret_cap_x_(size)
# define _Ret_opt_cap_x_(size)
# define _Ret_bytecap_x_(size)
# define _Ret_opt_bytecap_x_(size)
# define _Ret_z_cap_(size)
# define _Ret_opt_z_cap_(size)
# define _Ret_z_bytecap_(size)
# define _Ret_opt_z_bytecap_(size)
# define _Ret_count_(size)
# define _Ret_opt_count_(size)
# define _Ret_bytecount_(size)
# define _Ret_opt_bytecount_(size)
# define _Ret_count_c_(size)
# define _Ret_opt_count_c_(size)
# define _Ret_bytecount_c_(size)
# define _Ret_opt_bytecount_c_(size)
# define _Ret_count_x_(size)
# define _Ret_opt_count_x_(size)
# define _Ret_bytecount_x_(size)
# define _Ret_opt_bytecount_x_(size)
# define _Ret_z_count_(size)
# define _Ret_opt_z_count_(size)
# define _Ret_z_bytecount_(size)
# define _Ret_opt_z_bytecount_(size)
# define _Ret_valid_
# define _Ret_opt_valid_
# define _Ret_notnull_
# define _Ret_maybenull_
# define _Ret_null_
# define _Deref_pre_z_
# define _Deref_pre_opt_z_
# define _Deref_pre_cap_(size)
# define _Deref_pre_opt_cap_(size)
# define _Deref_pre_bytecap_(size)
# define _Deref_pre_opt_bytecap_(size)
# define _Deref_pre_cap_c_(size)
# define _Deref_pre_opt_cap_c_(size)
# define _Deref_pre_bytecap_c_(size)
# define _Deref_pre_opt_bytecap_c_(size)
# define _Deref_pre_cap_x_(size)
# define _Deref_pre_opt_cap_x_(size)
# define _Deref_pre_bytecap_x_(size)
# define _Deref_pre_opt_bytecap_x_(size)
# define _Deref_pre_z_cap_(size)
# define _Deref_pre_opt_z_cap_(size)
# define _Deref_pre_z_bytecap_(size)
# define _Deref_pre_opt_z_bytecap_(size)
# define _Deref_pre_z_cap_c_(size)
# define _Deref_pre_opt_z_cap_c_(size)
# define _Deref_pre_z_bytecap_c_(size)
# define _Deref_pre_opt_z_bytecap_c_(size)
# define _Deref_pre_z_cap_x_(size)
# define _Deref_pre_opt_z_cap_x_(size)
# define _Deref_pre_z_bytecap_x_(size)
# define _Deref_pre_opt_z_bytecap_x_(size)
# define _Deref_pre_valid_cap_(size)
# define _Deref_pre_opt_valid_cap_(size)
# define _Deref_pre_valid_bytecap_(size)
# define _Deref_pre_opt_valid_bytecap_(size)
# define _Deref_pre_valid_cap_c_(size)
# define _Deref_pre_opt_valid_cap_c_(size)
# define _Deref_pre_valid_bytecap_c_(size)
# define _Deref_pre_opt_valid_bytecap_c_(size)
# define _Deref_pre_valid_cap_x_(size)
# define _Deref_pre_opt_valid_cap_x_(size)
# define _Deref_pre_valid_bytecap_x_(size)
# define _Deref_pre_opt_valid_bytecap_x_(size)
# define _Deref_pre_count_(size)
# define _Deref_pre_opt_count_(size)
# define _Deref_pre_bytecount_(size)
# define _Deref_pre_opt_bytecount_(size)
# define _Deref_pre_count_c_(size)
# define _Deref_pre_opt_count_c_(size)
# define _Deref_pre_bytecount_c_(size)
# define _Deref_pre_opt_bytecount_c_(size)
# define _Deref_pre_count_x_(size)
# define _Deref_pre_opt_count_x_(size)
# define _Deref_pre_bytecount_x_(size)
# define _Deref_pre_opt_bytecount_x_(size)
# define _Deref_pre_valid_
# define _Deref_pre_opt_valid_
# define _Deref_pre_invalid_
# define _Deref_pre_notnull_
# define _Deref_pre_maybenull_
# define _Deref_pre_null_
# define _Deref_pre_readonly_
# define _Deref_pre_writeonly_
# define _Deref_post_z_
# define _Deref_post_opt_z_
# define _Deref_post_cap_(size)
# define _Deref_post_opt_cap_(size)
# define _Deref_post_bytecap_(size)
# define _Deref_post_opt_bytecap_(size)
# define _Deref_post_cap_c_(size)
# define _Deref_post_opt_cap_c_(size)
# define _Deref_post_bytecap_c_(size)
# define _Deref_post_opt_bytecap_c_(size)
# define _Deref_post_cap_x_(size)
# define _Deref_post_opt_cap_x_(size)
# define _Deref_post_bytecap_x_(size)
# define _Deref_post_opt_bytecap_x_(size)
# define _Deref_post_z_cap_(size)
# define _Deref_post_opt_z_cap_(size)
# define _Deref_post_z_bytecap_(size)
# define _Deref_post_opt_z_bytecap_(size)
# define _Deref_post_z_cap_c_(size)
# define _Deref_post_opt_z_cap_c_(size)
# define _Deref_post_z_bytecap_c_(size)
# define _Deref_post_opt_z_bytecap_c_(size)
# define _Deref_post_z_cap_x_(size)
# define _Deref_post_opt_z_cap_x_(size)
# define _Deref_post_z_bytecap_x_(size)
# define _Deref_post_opt_z_bytecap_x_(size)
# define _Deref_post_valid_cap_(size)
# define _Deref_post_opt_valid_cap_(size)
# define _Deref_post_valid_bytecap_(size)
# define _Deref_post_opt_valid_bytecap_(size)
# define _Deref_post_valid_cap_c_(size)
# define _Deref_post_opt_valid_cap_c_(size)
# define _Deref_post_valid_bytecap_c_(size)
# define _Deref_post_opt_valid_bytecap_c_(size)
# define _Deref_post_valid_cap_x_(size)
# define _Deref_post_opt_valid_cap_x_(size)
# define _Deref_post_valid_bytecap_x_(size)
# define _Deref_post_opt_valid_bytecap_x_(size)
# define _Deref_post_count_(size)
# define _Deref_post_opt_count_(size)
# define _Deref_post_bytecount_(size)
# define _Deref_post_opt_bytecount_(size)
# define _Deref_post_count_c_(size)
# define _Deref_post_opt_count_c_(size)
# define _Deref_post_bytecount_c_(size)
# define _Deref_post_opt_bytecount_c_(size)
# define _Deref_post_count_x_(size)
# define _Deref_post_opt_count_x_(size)
# define _Deref_post_bytecount_x_(size)
# define _Deref_post_opt_bytecount_x_(size)
# define _Deref_post_valid_
# define _Deref_post_opt_valid_
# define _Deref_post_notnull_
# define _Deref_post_maybenull_
# define _Deref_post_null_
# define _Deref_ret_z_
# define _Deref_ret_opt_z_
# define _Deref2_pre_readonly_
# define _Prepost_z_
# define _Prepost_opt_z_
# define _Prepost_count_(size)
# define _Prepost_opt_count_(size)
# define _Prepost_bytecount_(size)
# define _Prepost_opt_bytecount_(size)
# define _Prepost_count_c_(size)
# define _Prepost_opt_count_c_(size)
# define _Prepost_bytecount_c_(size)
# define _Prepost_opt_bytecount_c_(size)
# define _Prepost_count_x_(size)
# define _Prepost_opt_count_x_(size)
# define _Prepost_bytecount_x_(size)
# define _Prepost_opt_bytecount_x_(size)
# define _Prepost_valid_
# define _Prepost_opt_valid_
# define _Deref_prepost_z_
# define _Deref_prepost_opt_z_
# define _Deref_prepost_cap_(size)
# define _Deref_prepost_opt_cap_(size)
# define _Deref_prepost_bytecap_(size)
# define _Deref_prepost_opt_bytecap_(size)
# define _Deref_prepost_cap_x_(size)
# define _Deref_prepost_opt_cap_x_(size)
# define _Deref_prepost_bytecap_x_(size)
# define _Deref_prepost_opt_bytecap_x_(size)
# define _Deref_prepost_z_cap_(size)
# define _Deref_prepost_opt_z_cap_(size)
# define _Deref_prepost_z_bytecap_(size)
# define _Deref_prepost_opt_z_bytecap_(size)
# define _Deref_prepost_valid_cap_(size)
# define _Deref_prepost_opt_valid_cap_(size)
# define _Deref_prepost_valid_bytecap_(size)
# define _Deref_prepost_opt_valid_bytecap_(size)
# define _Deref_prepost_valid_cap_x_(size)
# define _Deref_prepost_opt_valid_cap_x_(size)
# define _Deref_prepost_valid_bytecap_x_(size)
# define _Deref_prepost_opt_valid_bytecap_x_(size)
# define _Deref_prepost_count_(size)
# define _Deref_prepost_opt_count_(size)
# define _Deref_prepost_bytecount_(size)
# define _Deref_prepost_opt_bytecount_(size)
# define _Deref_prepost_count_x_(size)
# define _Deref_prepost_opt_count_x_(size)
# define _Deref_prepost_bytecount_x_(size)
# define _Deref_prepost_opt_bytecount_x_(size)
# define _Deref_prepost_valid_
# define _Deref_prepost_opt_valid_
# define _Deref_out_z_cap_c_(size)
# define _Deref_inout_z_cap_c_(size)
# define _Deref_out_z_bytecap_c_(size)
# define _Deref_inout_z_bytecap_c_(size)
# define _Deref_inout_z_
#endif 

#endif /* TEESAL_H */
